import axios from "axios";
import {getToken, removeToken} from "@/utils/localData";
// 设置服务器 请求基地址
axios.defaults.baseURL = "http://127.0.0.1:3000";
// axios.defaults.baseURL = "http://157.122.54.189:9083";
// 在线服务器 - 新闻数据更多

// 添加请求拦截器 - axios 发送请求前自动执行的一个函数而已
//  interceptors 拦截器
//  request 请求
axios.interceptors.request.use(
	// config 就是请求时的配置
	(config) => {
		// console.log(cgetTokenonfig);
		// 在发送请求之前做些什么
		// 获取本地存储的 token
		let token = getToken();
		// 在发送请求之前做些什么
		if (token) config.headers.Authorization = token;
		return config; // 返回修改后的配置
	},
	(error) => {
		// 对请求错误做些什么  表示失败把error传给 catch()
		return Promise.reject(error);
	}
);

import {Dialog} from "vant";
import router from "@/router/index";
// 添加响应拦截器
axios.interceptors.response.use(
	(response) => {
		// console.log('服务器响应数据后，axios 会自动调用的函数', response)
		if (response.data.message === "用户信息验证失败") {
			removeToken(); //可能token过期了
			Dialog.confirm({
				title: "未登录",
				message: "需要登录后再操作",
				confirmButtonText: "去登录",
				cancelButtonText: "残忍拒绝",
			})
				.then(() => {
					// console.log(location.pathname);
					// on confirm
					router.push({
						name: "login",
						query: {
							from: location.href,
						},
						// query 地址栏中会被转译 但是vue后台显示是正常的
						// 可以用 params 更灵活 但路由需要配置 而且注意 path跟params 冲突
					});
				})
				.catch(() => {
					// on cancel
				});
		}

		// 对响应数据做点什么
		return response; // 返回的数据
	},
	(error) => {
		// 对响应错误做点什么
		return Promise.reject(error);
	}
);
export default axios;
